package com.wenjie.original.service;

import cn.hutool.json.JSONObject;
import com.wenjie.original.entity.SysDbEnum;
import com.wenjie.original.entity.SysDbField;
import com.wenjie.original.entity.vo.SysDbField.SysDbFieldByAddEnumsVo;
import com.wenjie.original.entity.vo.SysDbField.SysDbFieldBySelEnumsVo;
import com.wenjie.original.entity.vo.SysDbField.SysDbFieldUpOrAddVo;
import com.wenjie.original.entity.vo.SysDbField.SysDbFieldVo;
import com.wenjie.original.flex_config.baseInterface.CusIService;

import java.util.List;

/**
 * <p>
 * 字段映射 服务类
 * </p>
 *
 * @author author
 * @since 2024-09-06 15:31:17
 */
public interface ISysDbFieldService extends CusIService<SysDbField> {


    List<SysDbField> listBySysDbTableId(Long sysDbTableId);

    SysDbField getByFieldName(Long sysDbTableId, String fieldName);


    /**
     * @Description 根据表的主键id进行查询
     * @author wenjie
     * @date 2024/9/9 14:50
     */
    List<SysDbFieldVo.ResVo> cusListAll(Long sysDbTableId);


    /**
     * @Description 同步全部字段接口
     * @author wenjie
     * @date 2024/9/9 14:48
     */
    void syncAll(Long sysDbTableId);

    /**
     * @Description 同步字段接口
     * @author wenjie
     * @date 2024/9/9 14:48
     */
    void sync(Long sysDbTableId, String fieldName);


    /**
     * @Description 保存字段的枚举结果
     * @author wenjie
     * @date 2024/9/10 9:43
     */
    void addEnums(SysDbFieldByAddEnumsVo sysDbFieldByAddEnumsVo);

    /**
     * @Description 查询字段的枚举值
     * @author wenjie
     * @date 2024/9/10 10:10
     */
    List<SysDbEnum> listEnums(SysDbFieldBySelEnumsVo sysDbFieldBySelEnumsVo);

    /**
     * @Description 获取全部的参数枚举值
     * @author wenjie
     * @date 2024/9/11 17:34
     */
    JSONObject AllEnums();

    /**
     * @Description 通过表的Id查询 字段的结果
     * @author wenjie
     * @date 2024/9/12 13:48
     */
    List<SysDbField> getbyTableId(Long sysTableId);

    /**
     * @Description 修改字段信息
     * @author wenjie
     * @date 2024/9/12 14:30
     */
    void cusUpdateById(SysDbFieldUpOrAddVo.UpVo upVo);

    /**
     * @Description 通过主键 删除接口
     * @author wenjie
     * @date 2024/9/12 14:33
     */
    void cusRemoveById(Long sysDbFieldId);
}
